/* USER CODE BEGIN Header */
/**
  ******************************************************************************
  * File Name          : tran2PC.hpp
  * Description        : 
  ******************************************************************************
  * Function           :
  *
  ******************************************************************************
  * Author             : Zhiping Fu
  * Creation Date      : Nov 12, 2020
  ******************************************************************************
  */
/* USER CODE END Header */

#ifndef __TRAN2PC_HPP
#define __TRAN2PC_HPP


#include "userlib/userlib.hpp"
#include "system/system.hpp"

#ifdef __cplusplus
extern "C" {
#endif

#define TRAN2PC_RX_LEN 30
#define TRAN2PC_TX_LEN 40

void USART3_IRQHandler(void);
void DMA1_Stream1_IRQHandler(void);		//接收DMA中断服务函数
void DMA1_Stream3_IRQHandler(void);		//发送DMA中断服务函数

#ifdef __cplusplus
}
#endif


#ifdef __cplusplus

using namespace std;

class TRAN2PC
{
public:
	TRAN2PC(){}
	TRAN2PC(USART_TypeDef * h,char * n) : huart(h),name(n){}
	~TRAN2PC(){}

	void tran2PC_Init(void);

	bool uart_Send_DMA(uint8_t * pData,uint16_t Size);
	bool uart_Send_PCmsg(void);


	HAL_LockTypeDef LockRx;
	bool  RxFlag;		//接收标志位
	uint16_t   RxDataSize;
	uint8_t    RxRawDat[TRAN2PC_RX_LEN];   //数据
	uint8_t    RxDat[TRAN2PC_RX_LEN];
	bool  TxFlag;		//接收标志位
	bool linux_init_success;
	linux_msg linux;
	slam_msg slam;
private:
	USART_TypeDef * huart;
	char *name;
	uint8_t    TxHead;
	uint8_t    TxSum;
	uint8_t    TxDat[TRAN2PC_TX_LEN];
	uint32_t  index;		//发送数据序号,每发完一帧数据加一

	uint32_t  startTimer;			//计时器
	uint32_t  stopTimer;			//计时器
	uint32_t  executionTime_us;			//计时器
	uint32_t  startTimerLast;			//计时器
	uint32_t  cycleTime_us;

	//用户数据
	bool  Update;		//更新  --
	eSTA  Sta;			//状态  --
	eERR  Err;			//错误信息  --


	camTrigger_msg camTrigger;
	acc_raw accraw;
	gyro_raw gyroraw;
	quaternions qua;

};



#endif



#endif

/************************ (C) COPYRIGHT Longmen Drone Team *****END OF FILE****/
